package com.joyintech.feign;


import com.alibaba.fastjson.JSONObject;
import com.joyintech.config.FeignConfig;
import com.joyintech.util.ResponseData;
import com.joyintech.vo.RiskAssessVo;
import com.joyintech.vo.appgen.AppGenReq;
import com.joyintech.vo.customQuery.CustomQueryReq;
import com.joyintech.vo.fundRrxZhcp.Request;
import com.joyintech.vo.noticegen.NoticeGenReq;
import com.joyintech.vo.overviewOfWealth.resp.Line;
import com.joyintech.vo.todoback.TodoBackReq;
import com.joyintech.vo.todogen.TodoGenReq;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;

import java.util.List;
import java.util.Map;

/**
 * 理财
 */
@FeignClient(name = "fxjx-intf", configuration = FeignConfig.class)
public interface FcFeignService {

    /**
     * 02990000200303","理财产品待售明细-产品信息列表查询
     *
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/fc/fcPosOnConQuery", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fcPosOnCon.resp.Response> fcPosOnConQuery(@RequestBody com.joyintech.vo.fcPosOnCon.Request vo);

    /**
     * 04800000309002","基金资管-产品列表
     *
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/fund/fundProdQuery", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fundProd.resp.Response> fundProdQuery(@RequestBody com.joyintech.vo.fundProd.Request vo);

        /**
     * 06830000INS015","银保通险种信息查询
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/bankInsurance/insuranceTypeInquiry", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.insuranceTypeInquiry.resp.Response> insuranceTypeInquiry(@RequestBody com.joyintech.vo.insuranceTypeInquiry.Request vo);

        /**
     * 00690000027701","贵金属查询明细
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/preciousMetal/query", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.preciousMetal01.resp.Response> query(@RequestBody com.joyintech.vo.preciousMetal01.Request vo);

    /**
     * 00010000090000-能查所有活期和定期产品,但输出产品信息简单
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/disposit/depositAllIndex", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.depositAllIndex.resp.Response> depositAllIndex(@RequestBody com.joyintech.vo.depositAllIndex.Request vo);

    /**
     * 00010000081201","查大额存单产品列表或者特色产品或者按存款种类查
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/disposit/depositProdList", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.depositProdList.resp.Response> depositProdList(@RequestBody com.joyintech.vo.depositProdList.Request vo);

    /**
     * 04800000309129-基金资管-持仓明细
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/fund/fundHoldQuery", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fundHold.resp.Response> fundHold(@RequestBody com.joyintech.vo.fundHold.Request vo);

    /**
     * 02990000200306","理财产品持仓明细-客户持有产品查询(无已到期数据)
     */

    @PostMapping(value = "/fxjx-intf/fc/fcPosInq", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fcPosInq.resp.Response> fcPosInq(@RequestBody com.joyintech.vo.fcPosInq.Request vo);

    /**
     * 00690000027701","贵金属查询明细
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/preciousMetal/position", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.preciousMetal03.resp.Response> position(@RequestBody com.joyintech.vo.preciousMetal03.Request vo);

    /**
     * 06830000INS004-银保通客户保单查询
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/bankInsurance/policyInquiry", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.policyInquiry.resp.Response> policyInquiry(@RequestBody com.joyintech.vo.policyInquiry.Request vo);

    /**
     * 00010000393301-客户财富总览产品描述-既可以查询存款明细 又可以查询贷款明细 存款产品持仓明细
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/disposit/overviewOfWealth", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<List<Line>> overviewOfWealth(@RequestBody com.joyintech.vo.overviewOfWealth.Request vo);





    @PostMapping(value = "/fxjx-intf/front/token", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<JSONObject> toKenId(@RequestBody Map<String,Object> map);


    //00080000000004-待办任务批量生成 大零售接口
    @PostMapping(value = "/fxjx-intf/front/todoGen", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData todoGen(@RequestBody TodoGenReq vo, @RequestHeader("token_id") String  tokenId);



    //00080000000005-待办任务完结回调 大零售接口
    @PostMapping(value = "/fxjx-intf/front/todoBack", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData todoBack(@RequestBody TodoBackReq vo, @RequestHeader("token_id") String  tokenId);
    //00080000000006-提醒任务批量生成 大零售接口
    @PostMapping(value = "/fxjx-intf/front/noticeGen", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData noticeGen(@RequestBody NoticeGenReq vo, @RequestHeader("token_id") String  tokenId);


    @PostMapping(value = "/fxjx-intf/front/appGen", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
        //00080000000008-审批任务生成 大零售接口
    ResponseData appGen(@RequestBody AppGenReq vo, @RequestHeader("token_id") String  tokenId);

    /**
     * 07640000329002  组合产品详情查询 日日新
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/fund/fundRrxZhcp", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fundRrxZhcp.resp.Response> fundRrxZhcp(@RequestBody Request vo);

    /**
     * 07640000329005  组合份额汇总查询 日日新
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/fund/fundZhHz", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.fundZhHz.resp.Response> fundZhHz(@RequestBody com.joyintech.vo.fundZhHz.Request vo);

    /**
     * 05260000760024","客户信息查询"
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/custom/customInfoQuery", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<com.joyintech.vo.customInfoQuery.resp.Response> customInfoQuery(@RequestBody com.joyintech.vo.customInfoQuery.Request  vo);

    /**
     * 06290000180301", "共富投-推荐组合信息查询
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/front/gftZhcpxx", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<JSONObject> gftZhcpxx(@RequestBody com.joyintech.vo.gftZhcpxx.GftZhcpxxReq  vo);

    /**
     * 06290000180304", "共富投-客户组合持仓查询
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/front/gftZhccxx", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    ResponseData<JSONObject> gftZhccxx(@RequestBody com.joyintech.vo.gftZhccxx.GftZhccxxReq  vo);

    /**
     * 00080000000002	客户信息查询   大零售接口
     * @param vo
     * @return
     */
    @PostMapping(value = "/fxjx-intf/front/customQuery", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String customQuery(@RequestBody CustomQueryReq vo);

    @PostMapping(value = "/fxjx-intf/fc/riskAssess", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String riskAssess(@RequestBody RiskAssessVo vo);

    @PostMapping(value = "/fxjx-intf/fc/qualifiedInvestors", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String qualifiedInvestors(@RequestBody com.joyintech.vo.qualifiedInvestors.Request vo);
}

